#ifndef _ACEMESH_CLANG
#define _ACEMESH_CLANG
#include "aceMesh_task.h"
#include "aceMesh_runtime.h"
#include "ci_task.h"

#define MAX_DIM 7
//#include "scheduler.h"
#define MAX_BUF_DIM 3
#define TOTAL_LOOPS 500
#define ARRAY_NUMS 3    //the nums of array in each loop
#define MAX_DTILEBOOK 3 // the nums of different sizes buf_blocks


void get_neighbor(ci_task* self,int neighbor, void* src_addr, void** neighbor_addrs, int *num_neigh);

#ifdef LDMM
struct access_region
{
  void* array;
  short ndim;
  int region[MAX_DIM][2];//support 3 dimension, lo bound,up bound
};


struct access_arrays
{
  struct access_region *arrList;
  int num;
};

struct layout_info
{
  int tile_size [MAX_BUF_DIM];
  int Ntiles;
};//tilelayout[MAX_DTILEBOOK];
extern void clear_paraloops();
#endif
extern void ci_task_destructor(ci_task* p_ci_task);
#endif
